﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
//using Hotel.Models;
using Hotel.Models;
using Hotel.WCF.ServiceSms;

namespace Hotel.WCF.Contracts
{
    [ServiceContract]
    public interface IHotel
    {
        
        #region ServiceSMS

        [OperationContract]
        StatutSMS SendSMS(string destinataire, string message);

        #endregion


        #region Caracteristique Hotels
        [OperationContract]
        int AddCaracteristiqueHotels(Ref_Caracteristique_Hotels ch);

        [OperationContract]
        List<Ref_Caracteristique_Hotels> getListCaracteristiqueHotels();
        #endregion


        #region Chaine Hotels
        [OperationContract]
        int AddChaineHotels(Chaine_Hotels ch);

        [OperationContract]
        int deleteChaineHotels(Chaine_Hotels ch);

        [OperationContract]
        List<Chaine_Hotels> getListChaineHotels();
        #endregion


        #region Chambre Hotels
        [OperationContract]
        int AddChambreHotels(Chambre_Hotels ch);

        [OperationContract]
        List<Chambre_Hotels> getListChambreHotels();
        #endregion


        #region Chambre Tarif Saisons
        [OperationContract]
        int AddChambreTarifSaisons(Chambre_Tarif_Saisons cts);

        [OperationContract]
        List<Chambre_Tarif_Saisons> getListChambreTarifSaisons();
        #endregion
        

        #region Clients
        [OperationContract]
        int AddClients(Clients cl);

        [OperationContract]
        List<Clients> getListClients();
        #endregion


        #region Equipement Chambres
        [OperationContract]
        int AddEquipementChambres(Equipement_Chambres ec);

        [OperationContract]
        List<Equipement_Chambres> getListEquipementChambres();
        #endregion


        #region Facture
        [OperationContract]
        int AddFacture(Facture f);

        [OperationContract]
        List<Facture> getListFacture();
        #endregion


        #region Guests
        [OperationContract]
        int AddGuests(Guests g);

        [OperationContract]
        List<Guests> getListGuests();
        #endregion


        #region Hotels
        [OperationContract]
        int AddHotels(Hotels h);

        [OperationContract]
        List<Hotels> getListHotel();
        #endregion


        #region Item Facture
        [OperationContract]
        int AddItemFacture(Item_Facture itf);

        [OperationContract]
        List<Item_Facture> getListItemFacture();
        #endregion


        #region Liste Equipements
        [OperationContract]
        int AddListeEquipements(Liste_Equipements le);

        [OperationContract]
        List<Liste_Equipements> getListEquipements();
        #endregion


        #region Methode Paiement
        [OperationContract]
        int AddMethodePaiement(Methode_Paiement mp);

        [OperationContract]
        List<Methode_Paiement> getListMethodePaiement();
        #endregion


        #region Niveau Garantit
        [OperationContract]
        int AddNiveauGarantit(Niveau_Garantit ng);

        [OperationContract]
        List<Niveau_Garantit> getListNiveauGarantit();
        #endregion

        #region Paiement Facture
        [OperationContract]
        int AddPaiementFacture(Paiement_Facture pf);

        [OperationContract]
        List<Paiement_Facture> getListPaiementFacture();
        #endregion


        #region Ref Caracteristique Hotels
        [OperationContract]
        int AddRefCaracteristiqueHotels(Ref_Caracteristique_Hotels rch);

        [OperationContract]
        List<Ref_Caracteristique_Hotels> getListRefCaracteristiqueHotels();
        #endregion


        #region Ref Classement Etoiles
        [OperationContract]
        int AddRefClassementEtoiles(Ref_Classement_Etoiles rce);

        [OperationContract]
        List<Ref_Classement_Etoiles> getListRefClassementEtoiles();
        #endregion


        #region Ref Pays
        [OperationContract]
        int AddRefPays(Ref_Pays rp);

        [OperationContract]
        List<Ref_Pays> getListPays();
        #endregion


        #region Ref Pieces
        [OperationContract]
        int AddRefPieces(Ref_Pieces rp);

        //[OperationContract]
        //List<Ref_Pieces> getListPiece();
        #endregion


        #region Ref Statut Chambres
        [OperationContract]
        int AddRefStatutChambres(Ref_Statut_Chambres rsc);

        [OperationContract]
        List<Ref_Statut_Chambres> getListRefStatutChambres();
        #endregion


        #region Ref Type Chambres
        [OperationContract]
        int AddRefTypeChambres(Ref_Type_Chambres rtc);

        [OperationContract]
        List<Ref_Type_Chambres> getListRefTypeChambres();
        #endregion


        #region Ref Type Pieces
        [OperationContract]
        int AddRefTypePieces(Ref_Type_Pieces rtp);

        //[OperationContract]
        //List<Ref_Type_Pieces> getListRefTypePieces();
        #endregion


        #region Remise
        [OperationContract]
        int AddRemise(Remise r);

        //[OperationContract]
        //List<Remise> getListRemise();
        #endregion


        #region Reservations
        [OperationContract]
        int AddReservations(Reservations r);

        //[OperationContract]
        //List<Reservations> getListReservations();
        #endregion


        #region Reservations Chambres
        [OperationContract]
        int AddReservationsChambres(Reservations_Chambres rc);

        //[OperationContract]
        //List<Reservations_Chambres> getListReservationsChambres();
        #endregion


        #region Source Reservation
        [OperationContract]
        int AddSourceReservation(Source_Reservation sr);

        //[OperationContract]
        //List<Source_Reservation> getListSourceReservation();
        #endregion


        #region Tarif Saisons
        [OperationContract]
        int AddTarifSaisons(Tarif_Saisons ts);

        [OperationContract]
        List<Tarif_Saisons> getListTarifSaison();
        #endregion


        #region Type Item Facture
        [OperationContract]
        int AddTypeItemFacture(Type_Item_Facture tif);

        [OperationContract]
        List<Type_Item_Facture> getListTypeItemFacture();
        #endregion
        
    }
}
